/*
 * @(#) AbstractServiceImpl.java 2010-9-2
 *
 * Copyright (c) 2010, Strong Technology Inc. All Rights Reserved.
 * Strong System Inc. CONFIDENTIAL
 */
package cn.strong.gweva.common.business.service.impl;

import java.util.Date;

import cn.strong.gweva.common.business.service.AbstractService;
import cn.strong.gweva.common.integration.dao.CommonDao;
import cn.strong.gweva.common.util.DateUtil;

/**
 * 系统基本Service
 * 
 * @author lilanfei
 * @version 1.0
 * @since 2010-9-2
 */
public abstract class AbstractServiceImpl implements AbstractService
{
	/** 公用DAO */
	private CommonDao commonDao;
	
	
	/**
	 * 根据类型获取采番号
	 * 
	 * @param type 类型
	 * @param number 采番号长度
	 * @throws Exception
	 */
	public String searchSeq(String type, int number) throws Exception
	{
		// seqno
		String seqNo = getSeqNo(type, number, "2010-11-01");
		return type + seqNo;
	}

	/**
	 * 取得采番值
	 * 
	 * @param type 采番编码
	 * @param number 位数
	 * @param date 日期
	 * @return 采番值
	 * @throws Exception
	 */
	private String getSeqNo(String type, int number, String date) throws Exception
	{
//		DipsGeneralStanderdEntity searchEntity = new DipsGeneralStanderdEntity();
//		// 采番表
//		searchEntity.setTableId(Constants.GENERAL_STANDERD_TABLE_ID_SEQ);
//		// KEY
//		searchEntity.setColumeId(type);
//		Date vaildFrom = DateUtil.getDateByString(date, DateUtil.DATE_PATTERN_15);
//		// 有效期 借用半角文字1
//		searchEntity.setHalfwidth1(date);
//		SeqEntity resultEntity = (SeqEntity)this.getCommonDao().searchObj(
//				Constants4Method.COMMON_SEARCH_SEQ_BYTYPE, searchEntity);
//		BigDecimal seq = null;
//		if (resultEntity == null)
//		{
//			DipsGeneralStanderdEntity inserEntity = new DipsGeneralStanderdEntity();
//			// entity.setSeq(new BigDecimal("1"));
//			// 采番表
//			inserEntity.setTableId(Constants.GENERAL_STANDERD_TABLE_ID_SEQ);
//			// key
//			inserEntity.setColumeId(type);
//			// NAME
//			inserEntity.setName(type);
//			// from
//			// inserEntity.setValidFrom(DateUtil.getSysDate());
//			inserEntity.setValidFrom(vaildFrom);
//			inserEntity.setValidTo(vaildFrom);
//			// 采番值
//			inserEntity.setNum1(new BigDecimal("1"));
//			EntityUtility.setDbCommonField(SessionUtil.getLoginEntity(), inserEntity, true);
//			this.getCommonDao().insert(Constants4Method.COMMON_INSERT_SEQ, inserEntity);
//			if (!"2010-11-01".equals(date))
//			{
//				// 删除以前的
//				this.getCommonDao().delete(Constants4Method.COMMON_DELETE_SEQ_MONTH_AGO,
//						inserEntity);
//			}
//			seq = inserEntity.getNum1();
//		}
//		else
//		{
//			DipsGeneralStanderdEntity updateEntity = new DipsGeneralStanderdEntity();
//			// entity = resultEntity;
//			// 采番表
//			updateEntity.setTableId(Constants.GENERAL_STANDERD_TABLE_ID_SEQ);
//			// KEY
//			updateEntity.setColumeId(type);
//			// resultEntity.setSeq(resultEntity.getSeq().add(new BigDecimal("1")));
//			updateEntity.setNum1(resultEntity.getSeq().add(new BigDecimal("1")));
//			updateEntity.setExclusivekey(resultEntity.getExclusivekey());
//			EntityUtility.setDbCommonField(SessionUtil.getLoginEntity(), updateEntity, false);
//			this.getCommonDao().update(Constants4Method.COMMON_UPDATE_SEQ, updateEntity);
//			seq = updateEntity.getNum1();
//		}
//		String seqNo = StringUtil.addZero(seq.toString(), number);
//		return seqNo;
		return null;
	}

	/**
	 * 根据类型获取采番号(带日期)
	 * 
	 * @param type 类型
	 * @param number 采番号长度
	 * @throws Exception
	 */
	public String searchSeqDate(String type, int number) throws Exception
	{

		// 采番Type + YYYYMMDD(当前日期) + 采番号（number位长）
		Date now = DateUtil.getSysDate();
		String yyymmdd = DateUtil.getDateString(now, DateUtil.DATE_PATTERN_15);
		// seqno
		String seqNo = getSeqNo(type, number, yyymmdd);
		
		yyymmdd = DateUtil.getDateString(now, DateUtil.DATE_PATTERN_16);
		// 返回值
		return type + yyymmdd + seqNo;
	}
	/**
	 * @return commonDao
	 */
	public CommonDao getCommonDao()
	{
		return commonDao;
	}

	/**
	 * @param commonDao commonDao
	 */
	public void setCommonDao(CommonDao commonDao)
	{
		this.commonDao = commonDao;
	}
}
